home *** CD-ROM | disk | FTP | other *** search
/ DOpus Plus / DOpus Plus.iso / Tutorial / C Guide / Average_Module1 / includes / DOExchange.h < prev    next >
C/C++ Source or Header  |  1998-09-16  |  3KB  |  136 lines

  1. /*******************************************************************
  2.  
  3.    DOExchange.h
  4.    
  5. *********************************************************************/
  6.  
  7. #include "includes/Project.h"
  8.  
  9. #define CONFIG_FILE "DOpus5:Settings/DOExchange.prefs"
  10.  
  11. /********************************************************************/
  12. // some defines for IPC_Commands
  13. // our template was
  14. // "Hide/S,Show/S,BGC=BackgroundColour/N,TC=TextColour/N,N=NewName/K,Quit/S"
  15.  
  16. #define IPCCMD_HIDE   1 << 0
  17. #define IPCCMD_SHOW   1 << 1
  18. #define IPCCMD_BGC    1 << 2
  19. #define IPCCMD_TC     1 << 3
  20. #define IPCCMD_NAME   1 << 4
  21. #define IPCCMD_QUIT   1 << 5
  22.  
  23. #define ARG_BGC       fargs->FA_Arguments[2]
  24. #define ARG_TC        fargs->FA_Arguments[3]
  25. #define ARG_NAME      fargs->FA_Arguments[4]
  26.  
  27. #define POPID_SAVE    0xFFF0
  28. #define POPID_QUIT    0xFFF1
  29.  
  30. #define CXID_USER     100 
  31.  
  32. /********************************************************************/
  33. // some structures
  34.  
  35. // since the Amiga developers did mean noone else should do an
  36. // Exchange program, the next both structures are the results of some
  37. // experiments and may (does) not match the real structures,
  38. // but I think I've got what I need :)
  39.  
  40. // a kind of CxMsg
  41. typedef struct
  42. {
  43.    struct Message msg; // ln_Type should be NT_MESSAGE
  44.    
  45.    ULONG a;
  46.    ULONG ID;   // message id
  47.    UBYTE c;  
  48.    UBYTE d;
  49.    UBYTE Code; // message type
  50.    
  51. }  FakeMsg;
  52.  
  53. // a kind of CxObj
  54. typedef struct
  55. {
  56.    char dummy1[14];
  57.    UBYTE flags;
  58.    char dummy2[125];
  59.    struct MsgPort *cx_port;
  60. }  CX_OBJ;
  61.  
  62.  
  63. // and now back to "normal" stuctures
  64. typedef struct _SubMenu_Node
  65. {
  66.    struct MinNode minnode;
  67.    struct MinList submenu;
  68.    
  69. }  SubMenu_Node;
  70.  
  71. typedef struct _DOE_Data
  72. {
  73.    ULONG a4;
  74.    struct Library *module;
  75.    struct Library *library;
  76.    IPCData *ipc;
  77.       
  78.    APTR messages;
  79.    
  80.    APTR notify_handle;
  81.    struct MsgPort *notify_port;
  82.          
  83.    struct Screen *screen;
  84.    
  85.    struct NewBroker nb;
  86.       
  87.    struct MsgPort *sender;
  88.    FakeMsg        *fmsg;
  89.    
  90.    PopUpMenu popmenu;
  91.    PopUpItem *popitem;
  92.    PopUpItem *compare;
  93.    
  94.    struct MinList submenus;
  95.    SubMenu_Node *submenu_node;
  96.    
  97.    struct Node *ptr_node;
  98.    
  99.    ULONG entry_count;
  100.    ULONG signals;
  101.    BOOL stop;
  102.    USHORT flags;
  103.          
  104.    CxObj *our_cxobj;
  105.    CxObj *filter;
  106.    CxObj *new_obj;
  107.    
  108.    struct Window *win;
  109.    WindowID id;
  110.    struct IBox ibox;
  111.    struct IntuiText itext;
  112.    char name[16];
  113.          
  114. }  DOE_Data; 
  115.  
  116. typedef struct _PassData
  117. {
  118.    UBYTE FrontPen;
  119.    UBYTE BackPen;
  120.    STRPTR name;
  121.    
  122. }  PassData;
  123.    
  124.  
  125. struct Gadget draggadget =
  126. {
  127.    NULL,
  128.    0, 0, 0, 0, 
  129.    GFLG_GADGHNONE | GFLG_RELWIDTH | GFLG_RELHEIGHT,
  130.    GACT_RELVERIFY, GTYP_WDRAGGING,
  131.    NULL, NULL, NULL, NULL,
  132.    NULL, NULL, NULL
  133. };
  134.  
  135. void DOExchange( STRPTR args, struct Screen *screen, IPCData *ipc );
  136.